﻿using Microsoft.AspNetCore.Http.Features;

namespace NiuX.AspNetCore;

public static class ServiceCollectionExtensions
{

    /// <summary>
    /// 配置Form表单的文件上传字节大小。
    /// </summary>
    /// <param name="services"></param>
    /// <returns></returns>
    public static IServiceCollection ConfigureFormOptionsForNoLimit(this IServiceCollection services)
    {
        return services.Configure<FormOptions>(options =>
         {
             // 默认值为 134,217,728 (128 MB)。
             options.ValueLengthLimit = int.MaxValue;
             options.MultipartBodyLengthLimit = long.MaxValue;
         });
    }
    /// <summary>
    /// 对于 Kestrel 托管的应用，默认的最大请求正文大小为
    /// </summary>
    /// <returns></returns>
    public static IWebHostBuilder ConfigureKestrelForNoLimitRequestBody(this WebApplicationBuilder builder)
    {
        return builder.WebHost.UseKestrel(x =>
         {
             //对于 Kestrel 托管的应用，默认的最大请求正文大小为 30,000,000 个字节，约为 28.6 MB。
             //或者设置为null，代表不限制大小。
             x.Limits.MaxRequestBodySize = long.MaxValue;
         });
    }
}